## pval_cutoff: 0.05
## lfc_cutoff: 0.58
## low_counts_cutoff: 10

General statistics

# Number of samples
length(counts_data)
## [1] 6
# Number of genes
nrow(counts_data)
## [1] 49315
# Total counts
colSums(counts_data)
## SRR13535276 SRR13535278 SRR13535280 SRR13535288 SRR13535290 SRR13535292 
##     5442647     5284506     6692745    11361755    11378178     4974222

Create DDS objects

# Create DESeqDataSet object
dds <- get_DESeqDataSet_obj(counts_data, ~ experimental_class_type)
## [1] TRUE
## [1] TRUE
## [1] "DESeqDataSet object of length 49315 with 0 metadata columns"
## [1] "DESeqDataSet object of length 14816 with 0 metadata columns"
colData(dds)
## DataFrame with 6 rows and 3 columns
##             experimental_class_type                   regime         treatment
##                            <factor>                 <factor>       <character>
## SRR13535276                       A in space without gravity without nanoceria
## SRR13535278                       A in space without gravity without nanoceria
## SRR13535280                       A in space without gravity without nanoceria
## SRR13535288                       C    in space with gravity without nanoceria
## SRR13535290                       C    in space with gravity without nanoceria
## SRR13535292                       C    in space with gravity without nanoceria

Sample-to-sample comparisons

# Transform data (blinded rlog)
rld <- get_transformed_data(dds)

PCA plot

pca <- rld$pca
pca_df <- cbind(as.data.frame(colData(dds)) %>% rownames_to_column(var = 'name'), pca$x)
summary(pca)
## Importance of components:
##                            PC1     PC2     PC3     PC4    PC5       PC6
## Standard deviation     32.1475 31.2210 27.8763 24.7058 21.724 1.145e-13
## Proportion of Variance  0.2672  0.2520  0.2009  0.1578  0.122 0.000e+00
## Cumulative Proportion   0.2672  0.5192  0.7202  0.8780  1.000 1.000e+00
ggplot(pca_df, aes(x = PC1, y = PC2, color = regime)) +
  geom_point() +
  geom_text(aes(label = name), position = position_nudge(y = -2), show.legend = F, size = 3) +
  scale_color_manual(values = colors_default) +
  scale_x_continuous(expand = c(0.2, 0))

Correlation heatmap

pheatmap(
  cor(rld$matrix),
  annotation_col = as.data.frame(colData(dds)) %>% select(regime),
  color = brewer.pal(8, 'YlOrRd')
)

Wald test results

# DE analysis using Wald test
dds_full <- DESeq(dds)
colData(dds_full)
## DataFrame with 6 rows and 4 columns
##             experimental_class_type                   regime         treatment        sizeFactor
##                            <factor>                 <factor>       <character>         <numeric>
## SRR13535276                       A in space without gravity without nanoceria 0.667323075938639
## SRR13535278                       A in space without gravity without nanoceria  0.81694119800501
## SRR13535280                       A in space without gravity without nanoceria 0.752369826698879
## SRR13535288                       C    in space with gravity without nanoceria  2.07170948187156
## SRR13535290                       C    in space with gravity without nanoceria  1.54715563274509
## SRR13535292                       C    in space with gravity without nanoceria 0.793327230993373
# Wald test results
res <- results(
  dds_full,
  contrast = c('experimental_class_type', condition, control),
  alpha = pval_cutoff
)
res
## log2 fold change (MLE): experimental_class_type A vs C 
## Wald test p-value: experimental class type A vs C 
## DataFrame with 14816 rows and 6 columns
##                            baseMean      log2FoldChange             lfcSE                stat              pvalue              padj
##                           <numeric>           <numeric>         <numeric>           <numeric>           <numeric>         <numeric>
## ENSMUSG00000098104 6.35502456231063   0.760241835746701  1.27727422950974   0.595206431150267   0.551705491960912 0.916505454618322
## ENSMUSG00000103922 3.00820995044006  -0.433132469862162  1.50508317465069  -0.287779756731841   0.773515333947848                NA
## ENSMUSG00000033845  127.62317189879  -0.388841056957667 0.565086522771941  -0.688108884724892    0.49138421590585  0.90936777953573
## ENSMUSG00000102275 2.53432281523208   0.052192404259107  1.48972863687662  0.0350348398809961   0.972051959709466                NA
## ENSMUSG00000025903 96.0244264986236   -0.22868277884559 0.361327407736831  -0.632896298340448    0.52680136525585 0.913741764367388
## ...                             ...                 ...               ...                 ...                 ...               ...
## ENSMUSG00000061654 74.1506161155625   -5.88907033277663  3.77621710981995    -1.5595158227164                  NA                NA
## ENSMUSG00000079834 36.0645810209202  -0.295195870849416 0.577611890067793  -0.511062663226633   0.609307179042512 0.926138589079627
## ENSMUSG00000095041  247.75851728771 -0.0310833226001456  0.70240655703218 -0.0442526088188576   0.964703047322164 0.996240450001391
## ENSMUSG00000063897 25.0549115624976   0.105657103119908 0.547329254353544   0.193041212907029   0.846926691839342 0.978145142359403
## ENSMUSG00000095742 5.67614678631729    3.32611170026183  1.19057816181692    2.79369453172726 0.00521096764475008 0.233620147031621
mcols(res)
## DataFrame with 6 rows and 2 columns
##                        type                                            description
##                 <character>                                            <character>
## baseMean       intermediate              mean of normalized counts for all samples
## log2FoldChange      results log2 fold change (MLE): experimental_class_type A vs C
## lfcSE               results         standard error: experimental class type A vs C
## stat                results         Wald statistic: experimental class type A vs C
## pvalue              results      Wald test p-value: experimental class type A vs C
## padj                results                                   BH adjusted p-values
summary(res)
## 
## out of 14816 with nonzero total read count
## adjusted p-value < 0.05
## LFC > 0 (up)       : 7, 0.047%
## LFC < 0 (down)     : 60, 0.4%
## outliers [1]       : 159, 1.1%
## low counts [2]     : 2586, 17%
## (mean count < 5)
## [1] see 'cooksCutoff' argument of ?results
## [2] see 'independentFiltering' argument of ?results

Summary details

# Upregulated genes (LFC > 0)
res_sig_df %>% filter(log2FoldChange > 0)
# Downregulated genes (LFC < 0)
res_sig_df %>% filter(log2FoldChange < 0)
# Outliers (pvalue and padj are NA)
res[which(is.na(res$pvalue)), ]
## log2 fold change (MLE): experimental_class_type A vs C 
## Wald test p-value: experimental class type A vs C 
## DataFrame with 159 rows and 6 columns
##                            baseMean    log2FoldChange            lfcSE              stat    pvalue      padj
##                           <numeric>         <numeric>        <numeric>         <numeric> <numeric> <numeric>
## ENSMUSG00000103509 7.40129514659621 -5.90607574224333 3.35481444717482 -1.76047761664345        NA        NA
## ENSMUSG00000079554 27.6268572906979 -6.82795018972092 3.46170098249739 -1.97242633729589        NA        NA
## ENSMUSG00000085842 28.7557787373665  4.16157267820479 2.17551385435109  1.91291481315163        NA        NA
## ENSMUSG00000103553 11.1103502276778 -5.49768239902653 2.81475102952893 -1.95316827007133        NA        NA
## ENSMUSG00000047496 20.2027882535108 -2.07168076288967 1.27171446535674 -1.62904552816306        NA        NA
## ...                             ...               ...              ...               ...       ...       ...
## ENSMUSG00000036452 108.127080322524 -4.32528294198353  1.4123201850542 -3.06253708454755        NA        NA
## ENSMUSG00000053846 27.1020098001409 -5.89973618289523 2.22510572870753 -2.65144083122834        NA        NA
## ENSMUSG00000024867 18.2290119625443 -1.55449720719351 1.46155195172496 -1.06359353518625        NA        NA
## ENSMUSG00000048029 22.7289185955884   -6.524648052149 3.90833857179094 -1.66941730668926        NA        NA
## ENSMUSG00000061654 74.1506161155625 -5.88907033277663 3.77621710981995  -1.5595158227164        NA        NA
# Low counts (only padj is NA)
res[which(is.na(res$padj) & !is.na(res$pvalue)), ]
## log2 fold change (MLE): experimental_class_type A vs C 
## Wald test p-value: experimental class type A vs C 
## DataFrame with 2586 rows and 6 columns
##                            baseMean      log2FoldChange            lfcSE                stat            pvalue      padj
##                           <numeric>           <numeric>        <numeric>           <numeric>         <numeric> <numeric>
## ENSMUSG00000103922 3.00820995044006  -0.433132469862162 1.50508317465069  -0.287779756731841 0.773515333947848        NA
## ENSMUSG00000102275 2.53432281523208   0.052192404259107 1.48972863687662  0.0350348398809961 0.972051959709466        NA
## ENSMUSG00000103280 2.25920960989173  -0.203644115909523 1.54505917870937  -0.131803440745637 0.895139764976657        NA
## ENSMUSG00000103355 3.20133964653833 -0.0484037993055934 1.26489669923099 -0.0382669978781832  0.96947480338187        NA
## ENSMUSG00000103845 2.38593730663329   -1.28167869010192 1.97492616036161  -0.648975498844597 0.516354213001323        NA
## ...                             ...                 ...              ...                 ...               ...       ...
## ENSMUSG00000064347 2.33248881267207    2.64615302037094 1.66190961299613    1.59223642469965  0.11133159173828        NA
## ENSMUSG00000064360 3.81826754243136   0.236955256621809 1.17588597018725   0.201512104599798 0.840298165462491        NA
## ENSMUSG00000064364 4.38182627855022   -1.46270936034755 1.21265521560855     -1.206203825721 0.227738909185352        NA
## ENSMUSG00000064365 2.11846226606742     1.8972763634415 1.77518921775789    1.06877415909376 0.285171445949883        NA
## ENSMUSG00000064366  4.0458526423878   -1.22558865873295 2.08041804960911    -0.5891069148161 0.555789555085029        NA

Shrunken LFC results

plotMA(res)

# Shrunken LFC results
res_shrunken <- lfcShrink(
  dds_full,
  coef = str_c('experimental_class_type_', condition, '_vs_', control),
  type = 'apeglm'
)
res_shrunken
## log2 fold change (MAP): experimental class type A vs C 
## Wald test p-value: experimental class type A vs C 
## DataFrame with 14816 rows and 5 columns
##                            baseMean       log2FoldChange             lfcSE              pvalue              padj
##                           <numeric>            <numeric>         <numeric>           <numeric>         <numeric>
## ENSMUSG00000098104 6.35502456231063   0.0196716422233373 0.206079217709953   0.551705491960912                NA
## ENSMUSG00000103922 3.00820995044006 -0.00811497916249672 0.205595902951226   0.773515333947848                NA
## ENSMUSG00000033845  127.62317189879  -0.0468543591037756 0.201405609003906    0.49138421590585 0.910778472009655
## ENSMUSG00000102275 2.53432281523208  0.00104597462915359 0.205356530202675   0.972051959709466                NA
## ENSMUSG00000025903 96.0244264986236  -0.0579342362061664 0.187805085301696    0.52680136525585 0.914773719007531
## ...                             ...                  ...               ...                 ...               ...
## ENSMUSG00000061654 74.1506161155625 -0.00862302834919477 0.207573765735475                  NA                NA
## ENSMUSG00000079834 36.0645810209202  -0.0336778097329669 0.198685384633099   0.609307179042512  0.92594546741698
## ENSMUSG00000095041  247.75851728771 -0.00209616369208908 0.198841011101911   0.964703047322164  0.99566965553023
## ENSMUSG00000063897 25.0549115624976   0.0133957589569269 0.194494569621879   0.846926691839342 0.977817490007095
## ENSMUSG00000095742 5.67614678631729     2.01391522128921  1.91987357632614 0.00521096764475008                NA
plotMA(res_shrunken)

mcols(res_shrunken)
## DataFrame with 5 rows and 2 columns
##                        type                                            description
##                 <character>                                            <character>
## baseMean       intermediate              mean of normalized counts for all samples
## log2FoldChange      results log2 fold change (MAP): experimental class type A vs C
## lfcSE               results           posterior SD: experimental class type A vs C
## pvalue              results      Wald test p-value: experimental class type A vs C
## padj                results                                   BH adjusted p-values
summary(res_shrunken, alpha = pval_cutoff)
## 
## out of 14816 with nonzero total read count
## adjusted p-value < 0.05
## LFC > 0 (up)       : 7, 0.047%
## LFC < 0 (down)     : 60, 0.4%
## outliers [1]       : 159, 1.1%
## low counts [2]     : 3159, 21%
## (mean count < 6)
## [1] see 'cooksCutoff' argument of ?results
## [2] see 'independentFiltering' argument of ?results

Summary details

# Upregulated genes (LFC > 0)
res_shrunken_sig_df %>% filter(log2FoldChange > 0)
# Downregulated genes (LFC < 0)
res_shrunken_sig_df %>% filter(log2FoldChange < 0)
# Outliers (pvalue and padj are NA)
res_shrunken[which(is.na(res_shrunken$pvalue)), ]
## log2 fold change (MAP): experimental class type A vs C 
## Wald test p-value: experimental class type A vs C 
## DataFrame with 159 rows and 5 columns
##                            baseMean       log2FoldChange             lfcSE    pvalue      padj
##                           <numeric>            <numeric>         <numeric> <numeric> <numeric>
## ENSMUSG00000103509 7.40129514659621  -0.0123156807074115 0.207854459212066        NA        NA
## ENSMUSG00000079554 27.6268572906979   -0.011482488512593 0.207786822785472        NA        NA
## ENSMUSG00000085842 28.7557787373665   0.0246738439330322 0.209304521679298        NA        NA
## ENSMUSG00000103553 11.1103502276778  -0.0177780380997078 0.208382236624155        NA        NA
## ENSMUSG00000047496 20.2027882535108  -0.0492315724372049 0.214095634831138        NA        NA
## ...                             ...                  ...               ...       ...       ...
## ENSMUSG00000036452 108.127080322524  -0.0607128941514573 0.220434621845026        NA        NA
## ENSMUSG00000053846 27.1020098001409  -0.0305768648442745 0.210613644943978        NA        NA
## ENSMUSG00000024867 18.2290119625443  -0.0287111419756263 0.208606390580886        NA        NA
## ENSMUSG00000048029 22.7289185955884 -0.00870315046919196 0.207583578847544        NA        NA
## ENSMUSG00000061654 74.1506161155625 -0.00862302834919477 0.207573765735475        NA        NA
# Low counts (only padj is NA)
res_shrunken[which(is.na(res_shrunken$padj) & !is.na(res_shrunken$pvalue)), ]
## log2 fold change (MAP): experimental class type A vs C 
## Wald test p-value: experimental class type A vs C 
## DataFrame with 3159 rows and 5 columns
##                            baseMean       log2FoldChange             lfcSE              pvalue      padj
##                           <numeric>            <numeric>         <numeric>           <numeric> <numeric>
## ENSMUSG00000098104 6.35502456231063   0.0196716422233373 0.206079217709953   0.551705491960912        NA
## ENSMUSG00000103922 3.00820995044006 -0.00811497916249672 0.205595902951226   0.773515333947848        NA
## ENSMUSG00000102275 2.53432281523208  0.00104597462915359 0.205356530202675   0.972051959709466        NA
## ENSMUSG00000103280 2.25920960989173 -0.00361950158846346 0.205495238592448   0.895139764976657        NA
## ENSMUSG00000103355 3.20133964653833 -0.00120581912777118 0.204580380302398    0.96947480338187        NA
## ...                             ...                  ...               ...                 ...       ...
## ENSMUSG00000065947 5.53967439422113   0.0697355147720251 0.221195175767654  0.0768166543068758        NA
## ENSMUSG00000064364 4.38182627855022  -0.0419282235724677 0.210623339876222   0.227738909185352        NA
## ENSMUSG00000064365 2.11846226606742   0.0237202420243018 0.208144689072666   0.285171445949883        NA
## ENSMUSG00000064366  4.0458526423878  -0.0114088008306986 0.206889985257622   0.555789555085029        NA
## ENSMUSG00000095742 5.67614678631729     2.01391522128921  1.91987357632614 0.00521096764475008        NA

Visualizing results

Heatmaps

# Plot normalized counts (z-scores)
pheatmap(counts_sig_norm[2:7], 
         color = brewer.pal(8, 'YlOrRd'), 
         cluster_rows = T, 
         show_rownames = F,
         annotation_col = as.data.frame(colData(dds)) %>% select(regime),
         border_color = NA,
         fontsize = 10,
         scale = 'row',
         fontsize_row = 10, 
         height = 20)

# Plot log-transformed counts
pheatmap(counts_sig_log[2:7], 
         color = rev(brewer.pal(8, 'RdYlBu')), 
         cluster_rows = T, 
         show_rownames = F,
         annotation_col = as.data.frame(colData(dds)) %>% select(regime),
         border_color = NA,
         fontsize = 10,
         fontsize_row = 10, 
         height = 20)

# Plot log-transformed counts (top 24 DE genes)
pheatmap((counts_sig_log %>% filter(ensembl_gene_id %in% res_sig_df$ensembl_gene_id[1:24]))[2:7],
         color = rev(brewer.pal(8, 'RdYlBu')), 
         cluster_rows = T, 
         show_rownames = F,
         annotation_col = as.data.frame(colData(dds)) %>% select(regime), 
         fontsize = 10,
         fontsize_row = 10, 
         height = 20)

Volcano plots

# Unshrunken LFC
res_df %>% 
  mutate(
    sig_threshold = if_else(
      padj < pval_cutoff & abs(log2FoldChange) >= lfc_cutoff,
      if_else(log2FoldChange > 0, 'DE-up', 'DE-down'),
      'non-DE'
    )
  ) %>% 
  filter(!is.na(sig_threshold)) %>% 
  ggplot() +
  geom_point(aes(x = log2FoldChange, y = -log10(padj), colour = sig_threshold)) +
  scale_color_manual(values = c('blue', 'red', 'gray')) +
  xlab('log2 fold change') + 
  ylab('-log10 adjusted p-value')

# Shrunken LFC
res_shrunken_df %>% 
  mutate(
    sig_threshold = if_else(
      padj < pval_cutoff & abs(log2FoldChange) >= lfc_cutoff,
      if_else(log2FoldChange > 0, 'DE-up', 'DE-down'),
      'non-DE'
    )
  ) %>% 
  filter(!is.na(sig_threshold)) %>% 
  ggplot() +
  geom_point(aes(x = log2FoldChange, y = -log10(padj), colour = sig_threshold)) +
  scale_color_manual(values = c('blue', 'red', 'gray')) +
  xlab('log2 fold change') + 
  ylab('-log10 adjusted p-value')

GSEA (all)

Hallmark genesets

# Shrunken LFC
get_fgsea_res(rank_lfc, mm_h) %>% plot_enrichment_table(rank_lfc, mm_h)

# Wald stat
get_fgsea_res(rank_stat, mm_h) %>% plot_enrichment_table(rank_stat, mm_h)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_h) %>% plot_enrichment_table(rank_pval, mm_h)

GO biological process

# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_bp) %>% plot_enrichment_table(rank_lfc, mm_c5_bp)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_bp) %>% plot_enrichment_table(rank_stat, mm_c5_bp)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_bp) %>% plot_enrichment_table(rank_pval, mm_c5_bp)

GO cellular component

# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_cc) %>% plot_enrichment_table(rank_lfc, mm_c5_cc)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_cc) %>% plot_enrichment_table(rank_stat, mm_c5_cc)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_cc) %>% plot_enrichment_table(rank_pval, mm_c5_cc)

GO molecular function

# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_mf) %>% plot_enrichment_table(rank_lfc, mm_c5_mf)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_mf) %>% plot_enrichment_table(rank_stat, mm_c5_mf)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_mf) %>% plot_enrichment_table(rank_pval, mm_c5_mf)

GSEA (DE)

Hallmark genesets

# Shrunken LFC
get_fgsea_res(rank_lfc, mm_h) %>% plot_enrichment_table(rank_lfc, mm_h)

# Wald stat
get_fgsea_res(rank_stat, mm_h) %>% plot_enrichment_table(rank_stat, mm_h)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_h) %>% plot_enrichment_table(rank_pval, mm_h)

GO biological process

# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_bp) %>% plot_enrichment_table(rank_lfc, mm_c5_bp)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_bp) %>% plot_enrichment_table(rank_stat, mm_c5_bp)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_bp) %>% plot_enrichment_table(rank_pval, mm_c5_bp)

GO cellular component

# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_cc) %>% plot_enrichment_table(rank_lfc, mm_c5_cc)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_cc) %>% plot_enrichment_table(rank_stat, mm_c5_cc)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_cc) %>% plot_enrichment_table(rank_pval, mm_c5_cc)

GO molecular function

# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_mf) %>% plot_enrichment_table(rank_lfc, mm_c5_mf)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_mf) %>% plot_enrichment_table(rank_stat, mm_c5_mf)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_mf) %>% plot_enrichment_table(rank_pval, mm_c5_mf)

System Info

sessionInfo()
## R version 3.6.3 (2020-02-29)
## Platform: x86_64-apple-darwin15.6.0 (64-bit)
## Running under: macOS Sierra 10.12.6
## 
## Matrix products: default
## BLAS:   /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRlapack.dylib
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## attached base packages:
##  [1] grid      parallel  stats4    stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##  [1] multiMiR_1.8.0              VennDiagram_1.6.20          futile.logger_1.4.3         fgsea_1.12.0                Rcpp_1.0.3                  RColorBrewer_1.1-2          pheatmap_1.0.12             DESeq2_1.26.0               SummarizedExperiment_1.16.1 DelayedArray_0.12.3         BiocParallel_1.20.1         matrixStats_0.57.0          Biobase_2.46.0              GenomicRanges_1.38.0        GenomeInfoDb_1.22.1         IRanges_2.20.2              S4Vectors_0.24.4            BiocGenerics_0.32.0         scales_1.1.1                forcats_0.4.0               stringr_1.4.0               dplyr_1.0.2                 purrr_0.3.3                 readr_1.3.1                 tidyr_1.0.0                 tibble_3.1.0                ggplot2_3.3.3               tidyverse_1.2.1            
## 
## loaded via a namespace (and not attached):
##   [1] colorspace_1.4-1       ellipsis_0.3.0         rsconnect_0.8.16       htmlTable_1.13.3       XVector_0.26.0         base64enc_0.1-3        rstudioapi_0.10        farver_2.1.0           bit64_0.9-7            mvtnorm_1.1-1          apeglm_1.8.0           AnnotationDbi_1.48.0   fansi_0.4.0            lubridate_1.7.4        xml2_1.2.2             splines_3.6.3          geneplotter_1.64.0     knitr_1.25             Formula_1.2-3          jsonlite_1.6           broom_0.7.5            annotate_1.64.0        cluster_2.1.0          png_0.1-7              compiler_3.6.3         httr_1.4.1             backports_1.1.5        assertthat_0.2.1       Matrix_1.2-18          cli_1.1.0              formatR_1.7            acepack_1.4.1          htmltools_0.5.1.1      tools_3.6.3            coda_0.19-3            gtable_0.3.0           glue_1.4.2             GenomeInfoDbData_1.2.2 fastmatch_1.1-0        bbmle_1.0.23.1         cellranger_1.1.0       jquerylib_0.1.3        vctrs_0.3.4            xfun_0.22              rvest_0.3.5            lifecycle_0.2.0        XML_3.99-0.3           MASS_7.3-51.5          zlibbioc_1.32.0        hms_0.5.2              lambda.r_1.2.4         yaml_2.2.0             memoise_1.1.0          gridExtra_2.3          emdbook_1.3.12         sass_0.3.1             bdsmatrix_1.3-4        rpart_4.1-15           latticeExtra_0.6-29    stringi_1.4.3          RSQLite_2.2.1          genefilter_1.68.0      checkmate_1.9.4        rlang_0.4.8            pkgconfig_2.0.3        bitops_1.0-6           evaluate_0.14          lattice_0.20-38        labeling_0.3           htmlwidgets_1.5.1      bit_1.1-15.1           tidyselect_1.1.0       plyr_1.8.4             magrittr_1.5           R6_2.4.0               generics_0.0.2         Hmisc_4.3-0            DBI_1.1.0              pillar_1.5.1           haven_2.2.0            foreign_0.8-75         withr_2.1.2            survival_3.1-8         RCurl_1.95-4.12        nnet_7.3-12            modelr_0.1.5           crayon_1.3.4           futile.options_1.0.1   utf8_1.1.4             rmarkdown_2.7          jpeg_0.1-8.1           locfit_1.5-9.4         readxl_1.3.1           data.table_1.13.6      blob_1.2.1             digest_0.6.27          xtable_1.8-4           numDeriv_2016.8-1.1    munsell_0.5.0          bslib_0.2.4